package es.deusto.programacionIV.calculator.model;

/**
 * This interface represents any binary operation type. From an operation type object 
 * you can expect to obtain the name and the symbol and even a method to create new operation
 * objects that will receive a reference to the type that created them.
 * 
 * @author Iker Jamardo Zugaza
 *
 */
public interface OperationType
{
	/**
	 * Returns the name of the operation type.
	 * @return The name of the operation type.
	 */
	public String getName();
	
	/**
	 * Returns the symbol of the operation type.
	 * @return The symbol of the operation type.
	 */
	public String getSymbol();
	
	/**
	 * Creates a new operation object. This method simplifies the
	 * process of creating operation instances because they need a reference
	 * to their operation type in their construction.
	 * @return The newly created operation with its operation type already assigned.
	 */
	public Operation createOperation();
}
